// 权限管理接口
import request from '@/utils/request'
import type {
  User,
  userListResponseData,
  allRoleResponseData,
  SetRole,
} from './type'

// 接口统一管理
enum API {
  // 用户管理 获取所有用户信息
  USER_URL = '/admin/acl/user/',
  // 用户管理 添加用户
  ADDUSER_URL = '/admin/acl/user/save',
  // 用户管理 编辑用户
  UPDATEUSER_URL = '/admin/acl/user/update',
  // 根据用户获取已有的角色信息以及全部的职位
  TOASSSIGN_URL = '/admin/acl/user/toAssign/',
  // 给已有的用户分配角色
  SETROLE_URL = '/admin/acl/user/doAssignRole',
  // 点击删除按钮删除某一个用户
  DELUSRE_URL = '/admin/acl/user/remove/',
  // 批量删除用户
  SELECTUSRE_URL = '/admin/acl/user/batchRemove',
}

// 获取管理用户分页列表接口
// 这里我们还要加一个传递的参数 用户名 用来进行搜索功能 接口标明携带的参数为query
export const requserList = (page: number, limit: number, username: string) => {
  return request.get<any, userListResponseData>(
    API.USER_URL + `${page}/${limit}/?username=${username}`,
  )
}

// 新增 和 编辑用户写在一起 带id就是编辑 不带就是新增
export const reqAddOrUpdateUser = (data: User) => {
  if (data.id) {
    return request.put<any, any>(API.UPDATEUSER_URL, data)
  } else {
    return request.post<any, any>(API.ADDUSER_URL, data)
  }
}
// 获取用户已有的角色信息接口 和全部角色
export const reqALLRole = (userId: number) => {
  return request.get<any, allRoleResponseData>(API.TOASSSIGN_URL + `${userId}`)
}

// 给已有用户添加角色
export const reqSetRole = (data: SetRole) => {
  return request.post<any, any>(API.SETROLE_URL, data)
}
// 点击删除按钮删除某一个用户
export const reqDelUser = (userId: number) => {
  return request.delete<any, any>(API.DELUSRE_URL + `${userId}`)
}
// 批量删除用户
export const reqSelectUser = (idList: number[]) => {
  return request.delete<any, any>(API.SELECTUSRE_URL, { data: idList })
}
